
# -*- coding: utf-8 -*-

from django.db import models
from django.contrib.auth.models import User
from django.utils.encoding import force_unicode
from comunidadcyt.gruposDeInvestigacion.models import GruposDeInvestigacion
from comunidadcyt.departamentos.models import Departamentos
from comunidadcyt.middleware import get_request
import unicodedata

PRIVACIDAD_CHOICES = (
                ('Todo el mundo','Todo el mundo'),
                ('Solo grupos','Solo grupos'),
                ('Solo departamentos','Solo departamentos'),
               )
class Eventos(models.Model):
    Nombre_evento = models.CharField(max_length = 200, verbose_name="* Nombre")
    Descripcion_evento = models.TextField(verbose_name="Descripción")
    Organizador = models.ForeignKey(User,related_name="evento_que_organiza", verbose_name="* Organizador")
    fecha_inicio = models.DateField(verbose_name="* Fecha de incio")
    hora_inicio = models.TimeField(verbose_name="* Hora de inicio")
    fecha_fin = models.DateField(verbose_name="* Fecha de fin")
    hora_fin = models.TimeField(verbose_name="* Hora de fin")
    privacidad = models.CharField(max_length=30,choices=PRIVACIDAD_CHOICES, default="Todo el mundo",verbose_name="* Privacidad")
    Imagen = models.ImageField(max_length=300,upload_to='media/Eventos',blank=True,null=True, default="static/images/default.png", verbose_name="Logo")
    grupos = models.ManyToManyField(GruposDeInvestigacion,blank = True, null = True, related_name="eventos", help_text=None)
    departamentos = models.ManyToManyField(Departamentos,blank = True, null = True, related_name = "eventos", help_text=None)
    Creador = models.ForeignKey(User,related_name="creador_evento",blank = True, null = True,editable=False)
    Editor = models.ForeignKey(User,related_name="editor_gevento",blank = True, null = True,editable=False)
    
    def save(self, *args, **kwargs):
        if not self.Creador:
            self.Creador = get_request().user
        self.Editor = get_request().user
        for field in self._meta.fields:
            if field.name == 'Imagen':
                field.upload_to = 'media/Eventos/%s' % unicodedata.normalize('NFKD', self.Nombre_evento).encode('ascii','ignore').replace(" ", "")
        super(Eventos, self).save(args, kwargs)
    
    def __str__(self):
        return force_unicode(self.Nombre_evento  + " (De:  " + self.fecha_inicio.isoformat() + ", a: " + self.fecha_fin.isoformat() + " )")

    def __unicode__(self):
        return force_unicode(self.Nombre_evento  + " (De:  " + self.fecha_inicio.isoformat() + ", a: " + self.fecha_fin.isoformat() + " )")